import  request from "@/utils/request";

/**
 *  Res是返回的参数，T是泛型，需要自己定义，返回对数统一管理
 */
type Result<T> = Promise<ItypeAPI<T>>;

interface ItypeAPI<T> {
    success: boolean,
    message: string,
    code: number,
    result: T,
    timestamp: string
}

/**
 * 登录信息
 */
interface LoginParams {
    username: string,
    password: string,
    captcha: string,
    checkKey: number,
}

/**
 * 登录信息
 */
interface LoginVO<S, U> {
    departs: [],
    multi_depart: number,
    sysAllDictItems:  S,
    token: string,
    userInfo: U,
}

/**
 *验证码
 *
 * @returns 验证码
 */
export const getAuthCodeQuest = (): Result<string> => {
    return request.get("/sys/randomImage/1");
}

/**
 * 登录
 *
 * @param data
 * @returns
 */
export const loginApi = (data: LoginParams): Result<LoginVO<null, null>> => {
    return request.post("/sys/login", data);
}


// interface ReqStatus {
//     id: string
//     navStatus: string
// }

// // post请求 ，没参数
// export const LogoutAPI = (): Result<null> =>
//     request.post("/admin/logout");



// // post请求 ，没参数，但要路径传参
// export const StatusAPI = (data: ReqStatus): Result<null> =>
//     request.post(`/productCategory?ids=${data.id}&navStatus=${data.navStatus}`);


// //  get请求，没参数，
// export const FlashSessionListApi = (): Result<null> =>
//     request.get("/flashSession/list");

// // get请求，有参数，路径也要传参  (也可能直接在这写类型，不过不建议,大点的项目会维护一麻烦)
// export const ProductCategoryApi = (params: { parentId: number }): any =>
//     request.get(`/productCategory/list/${params.parentId}`, { params });

// // get请求，有参数，(如果你不会写类型也可以使用any,不过不建议,因为用了之后 和没写TS一样)
// export const AdminListAPI = (params:any): any =>
//     request.get("/admin/list", { params });
